from aligo import Aligo

# 初始化（首次运行会弹出二维码扫码登录）
ali = Aligo()


def upload_to_aliyun(local_path: str, remote_folder: str = "root"):
    """
    上传文件到阿里云盘
    :param local_path: 本地文件路径（例如："./test.txt"）
    :param remote_folder: 网盘目标文件夹ID（默认根目录"root"）
    :return: 上传结果
    """
    # 通过路径获取文件夹ID（若已知ID可直接使用）
    folder = ali.get_folder_by_path(remote_folder)
    # 执行上传
    result = ali.upload_file(file_path=local_path, parent_file_id=folder.file_id)
    return f"文件已上传至：{result.file_name} (ID: {result.file_id})"


def download_from_aliyun(file_id: str, local_dir: str = "./downloads"):
    """
    从阿里云盘下载文件
    :param file_id: 网盘文件ID（例如："63f9a8c1fe534ea1a34c4702a6c57412"）
    :param local_dir: 本地保存目录（默认"./downloads"）
    :return: 下载结果
    """
    # 创建本地目录
    import os
    os.makedirs(local_dir, exist_ok=True)
    # 执行下载
    result = ali.download_file(file_id=file_id, local_folder=local_dir)
    return f"文件已保存至：{result}"


# 使用示例
if __name__ == "__main__":
    # 上传示例
    print(upload_to_aliyun("G:\ss\pos_r/sample_p5_2000524_2025-04-08_k30m.pkl", "/xtprice/"))

    # 下载示例（需先通过ali.get_file_list()获取文件ID）
    # print(download_from_aliyun("63f9a8c1fe534ea1a34c4702a6c57412"))